<?php
// 文件相关类

/**
 * 文件日志
 *
 * @param $string
 * @param $fileName
 * @return void
 */
function flog($string, $fileName = 'test.txt')
{
	$separator = PHP_EOL . '------------------' . PHP_EOL;
	$time      = $separator . date('Y-m-d H:i:s') . PHP_EOL;
	file_put_contents(__DIR__ . '/log/' . $fileName, $time . $string . $separator, 8);
}


/*文件及文件夹创建函数
$data = array(
    "url" => "文件路径，如果路径最后一级的名称带.则创建文件而非文件夹，只有创建文件的时候才需要录入文件内容",
    "text" => "文件内容",
);
*/
function fileNew($data)
{
	$array = explode("/", $data['url']);
	$url   = "";
	foreach ($array as $name) {
		if (isset($name)) {
			$url .= "/" . $name;
			if (!file_exists($url)) { //如果此路径不存在
				if ($url == $data['url'] and strstr($name, ".")) { //如果已经拼接到完整路径，且检查到最末端带文件名后缀，则说明需要创建文件，而非文件夹
					$file = fopen($url, "w");                      //创建文件
					fwrite($file, $data['text']);                  //写入文件内容
				} else {
					mkdir($url); //则创建文件目录
				}
			}
		}
	}
}

/*删除本文件的同时检查本文件夹是否为空文件夹，如果是，则删除*/
function fileDelete(string $url): void
{
	$serverRoot = serverRoot . $url;
	if (empty($url)) {
		return;
	} elseif (file_exists($serverRoot)) {
		unlink($serverRoot);
		$folder = dirname($serverRoot);
		if (is_dir($folder) and emptyFolder($folder)) {
			rmdir($folder);
		}
	}
}

/*判断是否为空文件夹*/
//如果返回true，则为空文件夹
function emptyFolder($dir): bool
{
	if ($handle = opendir($dir)) {
		while (($item = readdir($handle)) !== false) {
			if ($item != "." && $item != "..") {
				return false;
			}
		}
	}
	return true;
}
